#ifndef CONTENT_MANAGER_H
#define CONTENT_MANAGER_H

#include <vector>
#include <string>
#include <iostream>
#include "UniversalIncludes.h"
#include "Engine.h"

class Texture2D;

class ContentManager
{
    // --- Fields ---
    private:
        static std::vector<Texture2D*> Texture2DCache;              // Cache of Texture2D
    public:
    // --- Methods ---
    public:
        static bool Initialize();                                   // Prepares ContentManager for use
        static void ClearAllCaches();                               // Clears every cache
        template <class T>
            static void ClearCache();                               // Clears a specific cache
        template <class T>
            static T* LoadContent(std::string fileName);
        static int powerOfTwo(int input);
};

class Texture2D
{
    public:
        std::string fileName;
        GLuint ID;
        int width;
        int height;
        int originalWidth;
        int originalHeight;
};

#endif
